/*
 * Classe que gera a janela principal do programa, inclui o menu principal que
 * da acesso a todas as outras telas do sistema.
 */
package projetofinal;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.*;
import java.beans.PropertyVetoException;
import javax.swing.*;

/**
 *
 * @author Will
 */
public class MainFrame extends JFrame {
    
    private JMenuBar mainMenu = new JMenuBar();
    private JPopupMenu menuPopUp;
    //MENUS DO SISTEMA
    private JMenu menuArquivo, menuCadastro, menuConsulta, menuAjuda;
    //SUB-MENUS DO SISTEMA
    private JMenuItem menuNovo, menuSair, 
              menuCadastroCliente, menuCadastroFuncionario,
              menuDuvidas, menuSobre, menuConsultaCliente, menuConsultaFuncionario;
        
    public JDesktopPane desktopFrame;
            
    public MainFrame(){
        super("Cadastro de clientes e funcionários");
        initComponents();
    }

    private void initComponents() {
        createMainFrame();
    }
    
    private void createMainFrame(){
        
        desktopFrame = new JDesktopPane();
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        
        setSize((screenSize.width / 2),(screenSize.height / 2));
        setExtendedState(MAXIMIZED_BOTH);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(desktopFrame);
        setJMenuBar(mainMenu);
        createMenus();
        //POP-UP MENU
        createPopupMenu();
    }
    
    private void createMenus(){
        
        //MENUS PRINCIPAIS
        menuArquivo     = new JMenu("Arquivo");
        menuCadastro    = new JMenu("Cadastros");
        menuConsulta    = new JMenu("Consulta");
        menuAjuda       = new JMenu("Ajuda");
        
        menuArquivo.setToolTipText("Cria, salva e abre informações do sistema, sai do sistema");
        menuArquivo.setMnemonic(KeyEvent.VK_A);
        menuCadastro.setToolTipText("Cadastra clientes e funcionários");
        menuCadastro.setMnemonic(KeyEvent.VK_C);
        menuConsulta.setToolTipText("Consulta clientes e funcionários do sistema");
        menuConsulta.setMnemonic(KeyEvent.VK_O);
        menuAjuda.setToolTipText("Ajuda e informações sobre o sistema");
        menuAjuda.setMnemonic(KeyEvent.VK_J);
        
        mainMenu.add(menuArquivo);
        mainMenu.add(menuCadastro);
        mainMenu.add(menuConsulta);
        mainMenu.add(menuAjuda);
        
        //SUB-MENUS
        menuNovo = new JMenuItem("Novo");
        menuNovo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
        menuNovo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                DemoEntradaSaidaArquivo entradaArquivo = new DemoEntradaSaidaArquivo();
            }
        });
        menuSair = new JMenuItem("Sair"); 
        menuSair.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
        menuSair.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                //Sai do sistema
                System.exit(-1);
            }
        });
        menuCadastroCliente = new JMenuItem("Cliente");
        menuCadastroCliente.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
        
        menuCadastroCliente.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                CadastroCliente cadastroCliente = new CadastroCliente("Cadastro de clientes");
                desktopFrame.add(cadastroCliente);
                cadastroCliente.moveToFront();
                try{
                    cadastroCliente.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        
        menuCadastroFuncionario = new JMenuItem("Funcionário");
        menuCadastroFuncionario.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
        
        menuCadastroFuncionario.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                CadastroFuncionario cadastroFuncionario = new CadastroFuncionario("Cadastro de funcionários");
                desktopFrame.add(cadastroFuncionario);
                cadastroFuncionario.moveToFront();
                try{
                    cadastroFuncionario.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        
        menuConsultaCliente = new JMenuItem("Cliente"); 
        
        menuConsultaCliente.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                ConsultaCliente consultaCliente = new ConsultaCliente("Consulta de clientes", desktopFrame);
                desktopFrame.add(consultaCliente);
                consultaCliente.moveToFront();
                try{
                    consultaCliente.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        
        menuConsultaFuncionario = new JMenuItem("Funcionário");
        
        menuConsultaFuncionario.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                ConsultaFuncionario consultaFuncionario = new ConsultaFuncionario("Consulta de funcionários", desktopFrame);
                desktopFrame.add(consultaFuncionario);
                consultaFuncionario.moveToFront();
                try{
                    consultaFuncionario.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        
        menuDuvidas = new JMenuItem("Dúvidas");
        menuDuvidas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));
        menuDuvidas.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String msg = "";
                msg += "Programa de cadastro de clientes e funcionários:\n";
                msg += "\t\tMenu Arquivo : Sem funcionalidade até o momento.\n";
                msg += "\t\tMenu Cadastro : Cadastro de clientes e funcionários.\n";
                msg += "\t\tMenu Consulta : Consulta de clientes e funcionários.\n";
                msg += "\t\tMenu Ajuda : Orientação e informações sobre o sistema.\n";
                JOptionPane.showMessageDialog(null, msg);
            }
        });
        menuSobre = new JMenuItem("Sobre");
        menuSobre.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
        menuSobre.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String msg = "";
                msg += "Programa de cadastro de clientes e funcionários:\n";
                msg += "\tVersão : 1.0.\n";
                msg += "\tAutor : William da Fonseca Guimarães.\n";
                msg += "\tCliente : Estácio/Fargs.\n";
                JOptionPane.showMessageDialog(null, msg);
            }
        });
        
        //ADICIONA OS SUB-MENU's AOS SEUS RESPECTIVOS MENUS
        menuArquivo.add(menuNovo);
        menuArquivo.add(menuSair);
        menuCadastro.add(menuCadastroCliente);
        menuCadastro.add(menuCadastroFuncionario);
        menuConsulta.add(menuConsultaCliente);
        menuConsulta.add(menuConsultaFuncionario);
        menuAjuda.add(menuDuvidas);
        menuAjuda.add(menuSobre);
        
    }
    
    public void createPopupMenu(){
        menuPopUp = new JPopupMenu();
        
        //MENUS PRINCIPAIS
        JMenu menuArquivoPopup     = new JMenu("Arquivo");
        JMenu menuCadastroPopup    = new JMenu("Cadastros");
        JMenu menuConsultaPopup    = new JMenu("Consulta");
        
        menuArquivoPopup.setToolTipText("Cria, salva e abre informações do sistema, sai do sistema");
        menuCadastroPopup.setToolTipText("Cadastra clientes e funcionários");
        menuConsultaPopup.setToolTipText("Consulta clientes e funcionários do sistema");
        
        //SUB-MENUS
        JMenuItem menuNovoPopup = new JMenuItem("Novo");
        JMenuItem menuSairPopup = new JMenuItem("Sair");
        menuSairPopup.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                //Sai do sistema
                System.exit(-1);
            }
        });
        JMenuItem menuCadastroClientePopup = new JMenuItem("Cliente");
        menuCadastroClientePopup.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                CadastroCliente cadastroCliente = new CadastroCliente("Cadastro de clientes");
                desktopFrame.add(cadastroCliente);
                cadastroCliente.moveToFront();
                try{
                    cadastroCliente.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        JMenuItem menuCadastroFuncionarioPopup = new JMenuItem("Funcionário");
        JMenuItem menuConsultaClientePopup = new JMenuItem("Cliente"); 
        menuConsultaClientePopup.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                ConsultaCliente consultaCliente = new ConsultaCliente("Consulta de clientes", desktopFrame);
                desktopFrame.add(consultaCliente);
                consultaCliente.moveToFront();
                try{
                    consultaCliente.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });
        JMenuItem menuConsultaFuncionarioPopup = new JMenuItem("Funcionário");
        
        menuConsultaFuncionarioPopup.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt){
                ConsultaFuncionario consultaFuncionario = new ConsultaFuncionario("Consulta de funcionários", desktopFrame);
                desktopFrame.add(consultaFuncionario);
                consultaFuncionario.moveToFront();
                try{
                    consultaFuncionario.setSelected(true);
                }catch(PropertyVetoException pve){
                    System.out.println(pve.toString());
                }
            }
        });

        menuArquivoPopup.add(menuNovoPopup);
        menuArquivoPopup.add(menuSairPopup);
        
        menuCadastroPopup.add(menuCadastroClientePopup);
        menuCadastroPopup.add(menuCadastroFuncionarioPopup);
        
        menuConsultaPopup.add(menuConsultaClientePopup);
        menuConsultaPopup.add(menuConsultaFuncionarioPopup);
        
        menuPopUp.add(menuArquivoPopup);
        menuPopUp.add(menuCadastroPopup);
        menuPopUp.add(menuConsultaPopup);
        
        MouseListener popupListener = new PopupListener(menuPopUp);
        addMouseListener(popupListener);
    }
    
}
